import axios from 'axios'
import store from '../vuex/store'
import { logOut } from '../vuex/action'

export default async (opts) => {
  try {
    const { data } = await axios(_.assign({
      baseURL: (process.env.DEBUG_MODE || location.hostname.includes('stg.pqvision.com')) ? '//stg.pqvision.com/api/' : '//pqvision.com/api/',
      headers: {
        Authorization: store.state.user.me.token,
        'Accept-Version': 'v1',
      },
    }, opts))
    if (opts.url.startsWith('http')) {
      console.debug(data)
      return data
    } else {
      var { meta: { err, msg, status }, body } = data
    }
  } catch (e) {
    console.error(e)
    throw StatusError('网络异常, 请重试')
  }
  if (status === 0) {
    console.debug(body)
    return body
  } else {
    console.error(status, msg, err)
    if (status === 1) {
      logOut(store)
    } else if (status === 2) {
      if (method==='GET') {
        router.go({name: 'index'})
      }
    }
    throw StatusError(msg)
  }
}

// export default async (opts) => {
//   try {
//     const { data } = await axios(_.assign({
//       progress (e) {
//         console.log(e)
//       },
//       // validateStatus (status) {
//       //   console.log(status)
//       //   // return status >= 200 && status < 300
//       //   return true
//       // },
//     }, opts))
//   } catch (e) {
//     console.error(e)
//     throw StatusError('网络异常, 请重试')
//   }
// }

// import 'whatwg-fetch'
// import _ from 'lodash'
// import qs from 'qs'
// import store from '../vuex/store'
// import { logOut } from '../vuex/action'
//
// export default async ({method='GET', path, data, query} = {}) => {
//   query = query ? '?'+qs.stringify(query, {encode: false, arrayFormat: 'brackets'}) : ''
//   path = `/api${path}${query}`
//   if (!location.hostname.includes('.newbeevc.com') && !location.hostname.includes('.newbee.vc')) {
//     path = `http://test.stg.newbeevc.com${path}`
//   }
//   try {
//     const res = await fetch(path, {
//       method: method,
//       headers:{
//         'Accept': 'application/json',
//         'Content-Type': 'application/json',
//         'Authorization': store.state.user.token,
//         'Accept-Version': 'v1',
//       },
//       body: data ? JSON.stringify(data) : data,
//     })
//     var { meta: { status, msg, err }, body = {} } = await res.json()
//   } catch (e) {
//     console.error(e)
//     throw StatusError('网络异常, 请重试')
//   }
//
//   if (status === 0) {
//     console.debug(body)
//     return body
//   } else {
//     console.error(status, msg, err)
//     if (status === 1) {
//       logOut(store)
//     } else if (status === 2) {
//       router.go({name: 'index'})
//     } else if (status === 5) {
//       router.go({name: 'error'})
//     }
//     throw StatusError(msg)
//   }
// }
